//package top.qitun.tian.security;
//
//import java.io.IOException;
//
//import javax.ws.rs.WebApplicationException;
//import javax.ws.rs.container.ContainerRequestContext;
//import javax.ws.rs.container.ContainerRequestFilter;
//import javax.ws.rs.core.Response;
//import javax.ws.rs.ext.Provider;
//
//import org.slf4j.Logger;
//
//import com.fasterxml.jackson.core.sym.Name;
//
//import top.qitun.tian.util.JsonWebTokenUtility;
//
//@Provider
//public class JWTSecurityFilter implements ContainerRequestFilter {
//	Logger logger = org.slf4j.LoggerFactory.getLogger(getClass());
//
//	@Override
//	public void filter(ContainerRequestContext containerRequestContext) throws IOException {
//		// 获取本地的私钥
//		// Key key= KeyUtil.getKey(context);
//		// 得到访问的方法 例如GET,POST
//		String method = containerRequestContext.getMethod().toLowerCase();
//		String path = containerRequestContext.getUriInfo().getPath().toLowerCase();
//		// 得到访问路径
//		// String path = ((ContainerRequest)
//		// containerRequestContext).getPath(true).toLowerCase();
//		// get application.wadl和application.wadl/xsd0.xsd不需要验证，post验证过滤,注册过滤。
//		if (("get".equals(method) && ("application.wadl".equals(path) || "application.wadl/xsd0.xsd".equals(path)))
//				|| ("post".equals(method) && ("authentication".equals(path) || "regist".equals(path)))
//				|| ("get".equals(method) && "user".equals(path))) {
//			// pass through the filter.
//			// containerRequestContext.setSecurityContext(new
//			// SecurityContextAuthorizer(uriInfo,new AuthorPricinple("pass"),
//			// new String[]{"pass"}));
//			return;
//		}
//
//		// 获取头信息中的token
//		String authorizationHeader = containerRequestContext.getHeaderString("auth_token");
//		// 如果token为空抛出
//		if (authorizationHeader == null) {
//			throw new WebApplicationException(Response.Status.UNAUTHORIZED);// 抛出未认证的错误
//		}
//		// 把Bear Token换成Token
//		// String
//		// strToken=extractJwtTokenFromAuthorizationHeader(authorizationHeader);
//		String userId = JsonWebTokenUtility.parseAndValidate(authorizationHeader).getUserId();
//
//		String uid = containerRequestContext.getPropertyNames().stream().filter(name -> "userid".equals(name))
//				.findFirst().get();
//		if (!userId.equals(uid)) {
//			throw new WebApplicationException(new Exception("token不是该用户的Id"));// 抛出未认证的错误
//		} else {
//			return;
//		}
//
//	}
//
//}
